#ifndef SQLITEPREFERENCEDAO_H_
#define SQLITEPREFERENCEDAO_H_

#include "../DAOFactory.h"
#include "../dao/PreferenceDAO.h"
#include "../../../util/exception/SQLiteException.h"

#include <sqlite3.h>
#include <sstream>

class SQLitePreferenceDAO: public PreferenceDAO {
private:
	sqlite3* database;
public:
	SQLitePreferenceDAO(sqlite3 *database);
	virtual void save(const Preference& preference);
	virtual void update(const Preference& preference);
	virtual void remove(const Preference& preference);
	virtual Preference loadPreferenceById(int id);
	virtual std::list<Preference>
	loadUserPreferences(const User& user);
	virtual std::list<Preference> loadAll();
};

#endif /* SQLITEPREFERENCEDAO_H_ */
